import request from '@/utils/request'

// 物品分类信息
export interface ItemCategory {
  categoryId: number
  categoryName: string
}

// 物品信息
export interface ItemInfo {
  itemId: number
  itemName: string
  categoryId: number
  category: ItemCategory
  specification: string
  unit: string
  minimumStock: number
  maximumStock: number
  createdAt: string
  updatedAt: string
}

// 查询参数
export interface ItemListParams {
  page?: number
  pageSize?: number
  itemName?: string
  categoryId?: number
}

// 返回结构
export interface ItemListResponse {
  list: ItemInfo[]
  total: number
  page: number
  pageSize: number
}

// 创建物品参数
export interface CreateItemParams {
  itemName: string
  categoryId: number
  specification: string
  unit: string
  minimumStock: number
  maximumStock: number
}

// 创建物品返回
export interface CreateItemResponse {
  itemId: number
  itemName: string
  categoryId: number
  specification: string
  unit: string
  minimumStock: number
  maximumStock: number
  createdAt: string
  updatedAt: string
}

// 更新物品参数
export interface UpdateItemParams {
  itemName?: string
  categoryId?: number
  specification?: string
  unit?: string
  minimumStock?: number
  maximumStock?: number
}

// 更新物品返回
export interface UpdateItemResponse {
  itemId: number
  itemName: string
  categoryId: number
  specification: string
  unit: string
  minimumStock: number
  maximumStock: number
  createdAt: string
  updatedAt: string
}

const itemApi = {
  // 获取物品列表
  getItemList(params: ItemListParams) {
    return request.get<ItemListResponse>('/getItems', { params })
  },
  // 获取单个物品
  getItemById(id: number) {
    return request.get<ItemInfo>(`/getItem/${id}`)
  },
  // 创建物品
  createItem(data: CreateItemParams) {
    return request.post<CreateItemResponse>('/createItem', data)
  },
  // 更新物品
  updateItem(id: number, data: UpdateItemParams) {
    return request.put<UpdateItemResponse>(`/updateItem/${id}`, data)
  },
  // 删除物品
  deleteItem(id: number) {
    return request.delete(`/deleteItem/${id}`)
  }
}

export default itemApi 